﻿Imports System.Runtime.Serialization
Imports System.ServiceModel
Imports WSEntidades
Imports WSNegocios

' NOTA: puede usar el comando "Cambiar nombre" del menú contextual para cambiar el nombre de clase "ServiceConfiguracion" en el código, en svc y en el archivo de configuración a la vez.
Public Class ServiceConfiguracion
    Implements IServiceConfiguracion

#Region "CatalogoImpFederalesOK"
    Public Function ActualizaImpuestosFederales(ByVal tokenConexion As String, ByVal ImpFederales As ImpFederalesBE, ByRef detResp As DetalleRespuesta) As Boolean Implements IServiceConfiguracion.ActualizaImpuestosFederales
        Dim ImpFedBL As ImpFederalesBL = New ImpFederalesBL
        detResp = New DetalleRespuesta()
        Try
            Return (ImpFedBL.ActualizaImpFederales(tokenConexion, ImpFederales, detResp))
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al actualizar datos de Impuestos Federales: " & ex.Message)
            Return False
        Finally
            ImpFedBL = Nothing
        End Try
    End Function

    Public Function GetImpuestosFederales(ByVal tokenConexion As String, ByRef cantDecimalesImpuestos As Int16, ByRef detResp As DetalleRespuesta) As ImpFederalesBE Implements IServiceConfiguracion.GetImpuestosFederales
        Dim ImpFedBL As ImpFederalesBL = New ImpFederalesBL
        Dim parEmiBL As ParamEmiBL = New ParamEmiBL()
        cantDecimalesImpuestos = 2
        Dim cantDecPrec As Int16 = 0
        Dim cantDecCant As Int16 = 0
        Dim cantDecTot As Int16 = 0
        detResp = New DetalleRespuesta()
        Try
            parEmiBL.GetConfiguracionDecimales(tokenConexion, cantDecCant, cantDecPrec, cantDecimalesImpuestos, cantDecTot)
            Return ImpFedBL.GetImpuestosFederales(tokenConexion, detResp)
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al obtener información de Impuestos Federales: " & ex.Message)
            Return Nothing
        Finally
            ImpFedBL = Nothing
            parEmiBL = Nothing
            cantDecPrec = Nothing
            cantDecCant = Nothing
            cantDecTot = Nothing
        End Try
    End Function

#End Region

#Region "CatalogoTipoDocumentosOK"

    Public Function ActualizaTipoDocumentos(ByVal tokenConexion As String, ByVal TipoDocumentos As TipoDocumentosBE, ByRef detResp As DetalleRespuesta) As Boolean Implements IServiceConfiguracion.ActualizaTipoDocumentos
        Dim TipoDocumentosBL As TipoDocumentosBL = New TipoDocumentosBL
        detResp = New DetalleRespuesta()
        Try
            Return (TipoDocumentosBL.ActualizaTipoDocumentos(tokenConexion, TipoDocumentos, detResp))
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al actualizar datos de Tipo de Documentos: " & ex.Message)
            Return False
        Finally
            TipoDocumentosBL = Nothing
        End Try
    End Function

    Public Function GetTipoDocumentos(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As TipoDocumentosBE Implements IServiceConfiguracion.GetTipoDocumentos
        Dim TipoDocumentosBL As TipoDocumentosBL = New TipoDocumentosBL
        detResp = New DetalleRespuesta()
        Try
            Return TipoDocumentosBL.GetTipoDocumentos(tokenConexion, detResp)
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al obtener información de Tipo de Documentos: " & ex.Message)
            Return Nothing
        Finally
            TipoDocumentosBL = Nothing
        End Try
    End Function

#End Region

#Region "CatalogoParamEmiOK"
    'Public Function RegistrarParamEmi(ByVal tokenConexion As String, ByVal ParamEmi As ParamEmiBE, ByVal ParamEmiPrede As ParamEmiPredeBE, ByRef detResp As DetalleRespuesta) As Boolean Implements IServicioCatalogos.RegistrarParamEmi
    '    Dim ParamEmiBL As ParamEmiBL = New ParamEmiBL()
    '    Dim codResp As Integer = 0
    '    Dim msg As String = ""
    '    detResp = New DetalleRespuesta()
    '    Try
    '        If (ParamEmiBL.RegistrarParamEmi(tokenConexion, ParamEmi, ParamEmiPrede, codResp, msg)) Then
    '            detResp.Codigo = codResp
    '            detResp.Mensajes = msg
    '            Return True
    '        Else
    '            detResp.Codigo = codResp
    '            detResp.Mensajes = msg
    '            Return False
    '        End If
    '    Catch ex As Exception
    '        detResp.Codigo = 999
    '        detResp.Mensajes = "Error al registrar Parametros de Emisión de Comprobantes: " & ex.Message & vbCrLf
    '        Return False
    '    Finally
    '        ParamEmiBL = Nothing
    '        codResp = Nothing
    '        msg = Nothing
    '    End Try
    'End Function

    Public Function ActualizaParamEmi(ByVal tokenConexion As String, ByVal ParamEmi As ParametrosEmisionBE,
                                      ByVal ParamEmiPrede As ParametrosEmisionPredeterminadosBE, ByRef detResp As DetalleRespuesta) As Boolean Implements IServiceConfiguracion.ActualizaParametrosEmision
        Dim ParamEmiBL As ParamEmiBL = New ParamEmiBL
        detResp = New DetalleRespuesta()
        Try
            Return (ParamEmiBL.ActualizaParamEmi(tokenConexion, ParamEmi, ParamEmiPrede, detResp))
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al actualizar datos de Parametros de Emisión de Comprobantes: " & ex.Message)
            Return False
        Finally
            ParamEmiBL = Nothing
        End Try
    End Function

    Public Function GetParamEmi(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As ParametrosEmisionBE Implements IServiceConfiguracion.GetParametrosEmision
        Dim ParamEmiBL As ParamEmiBL = New ParamEmiBL
        detResp = New DetalleRespuesta()
        Try
            Return ParamEmiBL.GetParamEmi(tokenConexion, detResp)
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al obtener información de Paramentros de Emisión de Comprobantes: " & ex.Message)
            Return Nothing
        Finally
            ParamEmiBL = Nothing
        End Try
    End Function

    Public Function GetParamEmiPrede(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As ParametrosEmisionPredeterminadosBE Implements IServiceConfiguracion.GetParamemtrosEmisionPredeterminados
        Dim ParamEmiBL As ParamEmiBL = New ParamEmiBL
        detResp = New DetalleRespuesta()
        Try
            Return ParamEmiBL.GetParamEmiPrede(tokenConexion, detResp)
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al obtener información de Parametros de Emisión de Comprobantes: " & ex.Message)
            Return Nothing
        Finally
            ParamEmiBL = Nothing
        End Try
    End Function

    Public Sub GetConfiguracionDecimales(ByVal tokenconexion As String, ByRef decEnCantidades As Int16,
                                              ByRef decEnPrecios As Int16, ByRef decEnImpuestos As Int16,
                                              ByRef decEnTotales As Int16) Implements IServiceConfiguracion.GetConfiguracionDecimales
        Dim parEmiBL As ParamEmiBL = New ParamEmiBL()
        decEnCantidades = 0
        decEnImpuestos = 0
        decEnPrecios = 0
        decEnTotales = 0
        Try
            parEmiBL.GetConfiguracionDecimales(tokenconexion, decEnCantidades, decEnPrecios, decEnImpuestos, decEnTotales)
        Finally
            parEmiBL = Nothing
        End Try
    End Sub
#End Region

#Region "CatalogoComplementosOK"
    Public Function ActualizaComplemento(ByVal tokenConexion As String, ByVal Complemento As ComplementosBE, ByRef detResp As DetalleRespuesta) As Boolean Implements IServiceConfiguracion.ActualizaComplemento
        Dim CompBL As ComplementosBL = New ComplementosBL
        detResp = New DetalleRespuesta()
        Try
            Return (CompBL.ActualizaComplemento(tokenConexion, Complemento, detResp))
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al actualizar datos de Complemento: " & ex.Message)
            Return False
        Finally
            CompBL = Nothing
        End Try
    End Function

    Public Function GetComplemento(ByVal tokenConexion As String, ByVal clave As String, ByRef detResp As DetalleRespuesta) As ComplementosBE Implements IServiceConfiguracion.GetComplemento
        Dim CompBL As ComplementosBL = New ComplementosBL
        detResp = New DetalleRespuesta()
        Try
            Return CompBL.GetComplemento(tokenConexion, clave, detResp)
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al obtener información de Complementos: " & ex.Message)
            Return Nothing
        Finally
            CompBL = Nothing
        End Try
    End Function

#End Region

#Region "CatalogoCompLeyendasFiscalesOK"
    Public Function RegistrarLeyenda(ByVal tokenConexion As String, ByVal Leyenda As CompLeyendasFiscBE, ByRef detResp As DetalleRespuesta) As Boolean _
                    Implements IServiceConfiguracion.RegistrarLeyenda
        Dim LeyendaBL As CompLeyendasFiscBL = New CompLeyendasFiscBL()
        detResp = New DetalleRespuesta()
        Try
            Return (LeyendaBL.RegistrarLeyenda(tokenConexion, Leyenda, detResp))
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al registrar la Leyenda: " & ex.Message)
            Return False
        Finally
            LeyendaBL = Nothing
        End Try
    End Function

    Public Function ActualizaLeyenda(ByVal tokenConexion As String, ByVal Leyenda As CompLeyendasFiscBE, ByRef detResp As DetalleRespuesta) As Boolean Implements IServiceConfiguracion.ActualizaLeyenda
        Dim LeyendaBL As CompLeyendasFiscBL = New CompLeyendasFiscBL()
        detResp = New DetalleRespuesta()
        Try
            Return (LeyendaBL.ActualizaLeyenda(tokenConexion, Leyenda, detResp))
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al actualizar datos de la Leyenda: " & ex.Message)
            Return False
        Finally
            LeyendaBL = Nothing
        End Try
    End Function

    Public Function GetLeyenda(ByVal tokenConexion As String, ByVal Id As Integer, ByRef detResp As DetalleRespuesta) As CompLeyendasFiscBE Implements IServiceConfiguracion.GetLeyenda
        Dim LeyendaBL As CompLeyendasFiscBL = New CompLeyendasFiscBL
        detResp = New DetalleRespuesta()
        Try
            Return LeyendaBL.GetLeyenda(tokenConexion, Id, detResp)
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al obtener los Datos de la Leyenda: " & ex.Message)
            Return Nothing
        Finally
            LeyendaBL = Nothing
        End Try
    End Function

    Public Function GetListadoLeyendas(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As List(Of CompLeyendasFiscBE) Implements IServiceConfiguracion.GetListadoLeyenda
        Dim LeyendaBL As CompLeyendasFiscBL = New CompLeyendasFiscBL
        detResp = New DetalleRespuesta()
        Try
            Return LeyendaBL.GetListadoLeyendas(tokenConexion, detResp)
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al obtener datos del Listado de Leyendas: " & ex.Message)
            Return Nothing
        Finally
            LeyendaBL = Nothing
        End Try
    End Function

#End Region

    '#Region "CatalogoConfigComplementos"
    '    Public Function ActualizaConfigComplementos(ByVal tokenConexion As String, ByVal ConfigComplementos As ConfigComplementosBE, ByRef detResp As DetalleRespuesta) As Boolean Implements IServicioCatalogos.ActualizaConfigComplementos
    '        Dim ConfigCompBL As ConfigComplementosBL = New ConfigComplementosBL
    '        Dim codResp As Integer = 0
    '        Dim msg As String = ""
    '        detResp = New DetalleRespuesta()
    '        Try
    '            If (ConfigCompBL.ActualizaConfigComplementos(tokenConexion, ConfigComplementos, codResp, msg)) Then
    '                detResp.Codigo = codResp
    '                detResp.Mensajes = msg
    '                Return True
    '            Else
    '                detResp.Codigo = codResp
    '                detResp.Mensajes = msg
    '                Return False
    '            End If
    '        Catch ex As Exception
    '            detResp.Codigo = 999
    '            detResp.Mensajes = "Error al actualizar datos de Configuracion Complementos: " & ex.Message & vbCrLf
    '            Return False
    '        Finally
    '            ConfigCompBL = Nothing
    '            codResp = Nothing
    '            msg = Nothing
    '        End Try
    '    End Function

    '    Public Function GetConfigComplementos(ByVal tokenConexion As String, ByVal CveComp As String, ByRef detResp As DetalleRespuesta) As ConfigComplementosBE Implements IServicioCatalogos.GetConfigComplementos
    '        Dim ConfigCompBL As ConfigComplementosBL = New ConfigComplementosBL
    '        Dim ConfigCompBE As ConfigComplementosBE
    '        Dim codResp As Integer = 0
    '        Dim msg As String = ""
    '        detResp = New DetalleRespuesta()
    '        Try
    '            ConfigCompBE = ConfigCompBL.GetConfigComplementos(tokenConexion, CveComp, codResp, msg)
    '            If (ConfigCompBE IsNot Nothing) Then
    '                detResp.Codigo = codResp
    '                detResp.Mensajes = msg
    '                Return ConfigCompBE
    '            Else
    '                detResp.Codigo = codResp
    '                detResp.Mensajes = msg
    '                Return Nothing
    '            End If
    '        Catch ex As Exception
    '            detResp.Codigo = 999
    '            detResp.Mensajes = "Error al obtener información de Configuracion Complementos: " & ex.Message & vbCrLf
    '            Return Nothing
    '        Finally
    '            ConfigCompBE = Nothing
    '            ConfigCompBL = Nothing
    '            codResp = Nothing
    '            msg = Nothing
    '        End Try
    '    End Function

    '#End Region

#Region "CatalogoComplementoDonatariasOK"
    Public Function ActualizaDonatarias(ByVal tokenConexion As String, ByVal Donatarias As CDonatariasBE, ByRef detResp As DetalleRespuesta) As Boolean Implements IServiceConfiguracion.ActualizaDonatarias
        Dim donatBL As CDonatariasBL = New CDonatariasBL
        detResp = New DetalleRespuesta()
        Try
            Return (donatBL.ActualizaDonatarias(tokenConexion, Donatarias, detResp))
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al actualizar datos del Complemento donatarias: " & ex.Message)
            Return False
        Finally
            donatBL = Nothing
        End Try
    End Function

    Public Function GetDonatarias(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As CDonatariasBE Implements IServiceConfiguracion.GetDonatarias
        Dim donatBL As CDonatariasBL = New CDonatariasBL
        detResp = New DetalleRespuesta()
        Try
            Return donatBL.GetDonatarias(tokenConexion, detResp)
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al obtener información del complemento donatarias: " & ex.Message)
            Return Nothing
        Finally
            donatBL = Nothing
        End Try
    End Function

#End Region

#Region "CatalogoComplementoIEDUOK"
    Public Function ActualizaIedu(ByVal tokenConexion As String, ByVal Iedu As CIeduBE, ByRef detResp As DetalleRespuesta) As Boolean Implements IServiceConfiguracion.ActualizaIedu
        Dim ieduBL As CIeduBL = New CIeduBL
        detResp = New DetalleRespuesta()
        Try
            Return (ieduBL.ActualizaIedu(tokenConexion, Iedu, detResp))
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al actualizar datos del Complemento IEDU: " & ex.Message)
            Return False
        Finally
            ieduBL = Nothing
        End Try
    End Function

    Public Function GetIedu(ByVal tokenConexion As String, ByRef detResp As DetalleRespuesta) As CIeduBE Implements IServiceConfiguracion.GetIedu
        Dim ieduBL As CIeduBL = New CIeduBL
        detResp = New DetalleRespuesta()
        Try
            Return ieduBL.GetIedu(tokenConexion, detResp)
        Catch ex As Exception
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Error al obtener información del complemento iedu: " & ex.Message)
            Return Nothing
        Finally
            ieduBL = Nothing
        End Try
    End Function
#End Region

#Region "Reportes"
    Public Function ListadoReportesCFDI(ByVal pRfcEmisor As String) As List(Of String) Implements IServiceConfiguracion.ListadoReportesCFDI
        Dim rptsBL As ReportesBL = New ReportesBL
        Try
            Return rptsBL.getListadoReportesFacturaPorRFC(pRfcEmisor)
        Catch ex As Exception
            Return Nothing
        Finally
            rptsBL = Nothing
        End Try
    End Function
#End Region
End Class
